package cn.yunsenlin.formula.cloud.interfaces;

import cn.yunsenlin.formula.cloud.bean.auth.AuthResult;
import cn.yunsenlin.formula.cloud.mysql.bean.generator.TbUser;

import javax.servlet.http.HttpSession;

/**
 * 鉴权服务
 */
public interface AuthService {
    /**
     * 检查鉴权信息并返回鉴权结果
     *
     * @param tbUser 用户信息
     * @return 鉴权结果
     */
    AuthResult checkAuthInfo(TbUser tbUser);

    /**
     * 检察token并刷新鉴权结果
     *
     * @param token token
     * @return 鉴权结果
     */
    AuthResult checkToken(String token);

    /**
     * 通过token获取用户信息
     *
     * @param token token
     * @return 用户信息
     */
    TbUser selectUserByToken(String token);

    /**
     * 检查session中的用户信息是否合法
     *
     * @param session session
     * @return 是否合法
     */
    boolean sessionHasValidAuth(HttpSession session);

    /**
     * 通过session获取用户信息
     *
     * @param session session
     * @return 用户信息
     */
    TbUser selectUserBySession(HttpSession session);

    /**
     * 创建用户
     *
     * @param tbUser 用户信息
     * @return 创建好的用户信息
     */
    TbUser createUser(TbUser tbUser);

    /**
     * 用户名是否重复
     *
     * @param username 用户名
     * @return 是否重复
     */
    boolean userNameIsRepeat(String username);
}
